<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>Object.defineProperty</title>
	</head>
	<body>
		<!-- 
				复习Object.defineProperty
						作用：给指定对象，添加指定属性，且可以“高级定制”
		 -->
		<script type="text/javascript" >
			let number = 18

			let person = {
				name:'张三',
				gender:'男'
			}

			Object.defineProperty(person,'age',{
				// value:18, //指定属性值
				// enumerable:true, //控制属性是否可以枚举，默认值是false
				// writable:true, //控制属性是都可以被修改，默认值是false
				// configurable:true, //控制属性是否可以被删除，默认值为false
				
				//当前有人读取了person的age属性时，get函数（getter）就会被调用，且返回的值就是age的值
				//get函数（getter）中的this是当前操作的对象
				get(){
					console.log('getter被调用了')
					// console.log(this) //此处的this是当前操作的对象
					return number
				},

				//当前有人修改了person的age属性时，set函数（setter）就会被调用，且setter会收到修改后的值。
				set(value){
					console.log('setter被调用了,值是：',value)
					// console.log(this) //此处的this是当前操作的对象
					number = value //修改number
				}
			})




		</script>
	</body>
</html>